/* 

给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ，就返回 0。

假设环境不允许存储 64 位整数（有符号或无符号）。
 

示例 1：

输入：x = 123
输出：321
示例 2：

输入：x = -123
输出：-321
示例 3：

输入：x = 120
输出：21
示例 4：

输入：x = 0
输出：0
 

提示：

-231 <= x <= 231 - 1

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/reverse-integer
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。

*/

/**
 * @param {number} x
 * @return {number}
 */
// 题解：https://leetcode-cn.com/problems/reverse-integer/solution/wei-yun-suan-ji-jian-jie-fa-by-ijzqardmbd/
// JavaScript的位运算以32二进制执行，进行位运算时，先将数值转换成32位有符号整数，取整就去除了小数部分了
var reverse = function (x) {
    let result = 0;
    while (x !== 0) {
        result = result * 10 + x % 10;
        /* 
            下面不能用Math.floor(x / 10) 因为：
            Math.floor(-1.1) === -2
            -1.1 | 0 === -1

            不能用Math.floor方法，该方法只能向下取整
            而位运算能只保留整数位
        */
        x = (x / 10) | 0;
    }
    return (result | 0) === result ? result : 0;
};